const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

const baseURL = "http://39.100.7.70:81/";
// const baseURL = "http://localhost:3000/";
const $ajax = (api, params = {}) => {
  const url = baseURL + api;
  return new Promise((resolve) => {
    wx.showLoading({
      title: '加载中...',
    });
    wx.request({
      header: {
        'content-type': 'application/json',
        Cookie: wx.getStorageSync("cookie")
      },
      url,
      method: params.type ? params.type : "post",
      data: params.data ? params.data : {},
      success: function(res) {
        resolve(res.data);
      },
      fail: function(error) {
        console.log(error);
      },
      complete: function(res) {
        // 隐藏loading图标
        wx.hideLoading();

        // 把cookie存在本地
        if (res.header['Set-Cookie']) {
          const reg = /koa\S*;/g
          const tempCookie = res.header['Set-Cookie'].match(reg)
          const cookie = tempCookie[0] + ' ' + tempCookie[1];
          wx.setStorageSync('cookie', cookie);
        }
      }
    })
  });
}


/**
 *  cookie授权登录
 * 1.  在vue(项目运行在浏览器中)
 *      1.首先用户输入帐号密码,前端校验完毕帐号密码符合规则之后,把这些数据发送给后端
 *          1.1 前端拿到用户密码发送给后端的时候有可能需要加密(MD5 base64...)(前后端协商)
 *      2.后端通过校验之后 自动的生成session的值 并且在发送给前端的相应头中 设置 set-session字段,这个字段就是后端返回的session值
 *      3.当浏览器接收到这个相应头的时候 会自动的将session中的值存储到cookie中
 *           3.1 如果非同源或者有跨域 那么浏览器是不会直接存储session到cookie中的
 *      4.然后再以后的每一次前后端交互过程中,浏览器会自动的把cookie中的值放到请求头中,然后给后端进行解析
 * 
 * 2. 在小程序中
 *    1. 基本上与浏览器中的操作是一致的,但是微信小程序不会直接读取set-session进行设置, 
 *    2. 需要在wx.request中拿到响应整体, 紧接着通过相应头中的set-session获取到session值
 *    3. 前端拿到session值之后 需要手动的通过wx.setStorageSync将这个值存贮到微信小程序的本地缓存中
 *    4. 紧接着在每一次发送请求的时候,在请求头中设置一个cookie字段,自己手动去获取微信小程序的本地缓存中的值,然后赋值给cookie,紧接着再继续发送请求就好了
 * 
 * 3. cookie或者session或者token过期之后
 *    1.后台都会直接的通过接口返回数据告诉前端 登录超时 或者cookie/token过期等等
 *    2.前端在接受到这样的返回值信息之后,直接的让页面跳转到登录就好啦
 * 
 * 4. 鉴权
 *    1. 用户在跳转到某一个需要登录之后才能进入的页面的时候
 *    2. 可以通过存储在缓存中的登录成功信息 或者 全局变量中的登录信息来判断是否已经登录
 *        2.1 在vue项目中 可以通过路由守卫来实现这个操作
 *        2.2 在小程序中 当页面需要跳转的时候 判断用户是否登录
 *        2.3 还可以在页面的onShow生命周期中进行判断当前用户是否登录, 如果用户没有登录,直接通过wxwx.navigateBack让用户返回上一页 或者跳转到登录页 都可以
 *    3. 如果登录,正常跳转, 如果没有登录 则直接提示用户需要登录
 * 
 */




module.exports = {
  formatTime: formatTime,
  baseURL,
  $ajax
}